package com.class05.servlet;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;


import java.io.*;

@Data  // set get
@NoArgsConstructor  // 无参构造
@AllArgsConstructor // 全参构造
@ToString // 重写toString方法
// 对象序列化时必须实现Serializable接口
public class Person implements Serializable {
    private String name;
    private int age;
}


class PersonTest{
    public static void main111(String[] args) throws IOException {
        System.out.println("序列化测试开始");
        Person person = new Person("张三", 18);
//        1、创建文件对象
        File file = new File("C:\\Users\\Administrator\\Desktop\\test\\tes.txt");
        file.createNewFile();
//        2、创建文件输出流
        FileOutputStream fileOutputStream = new FileOutputStream(file);
//        3、创建对象输出流
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
//        4、写入对象
        objectOutputStream.writeObject(person);
//        5、关闭流(注意：先打开的后关闭，后打开的先关闭)
        objectOutputStream.close();
        System.out.println("序列化测试结束");
        fileOutputStream.close();
    }


    public static void main(String[] args) throws Exception {
//        反序列化测试开始 ： 从硬盘   - >  内存
//        1、创建文件对象
        File file = new File("C:\\Users\\Administrator" +
                "\\Desktop\\test\\tes.txt");
//        2、创建文件输入流
        FileInputStream fileInputStream = new FileInputStream(file);
//        3、创建对象文件输入流
        ObjectInputStream objectInputStream = new
                ObjectInputStream(fileInputStream);
//        4、读取对象
        Person person = (Person) objectInputStream.readObject();
        System.out.println(person);
        objectInputStream.close();
        fileInputStream.close();

    }
}
